package com.findyou.param;

import com.findyou.pojo.User;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Title: ParamController
 * @Author 贾金博
 * @Package com.findyou.param
 * @Date 2024/3/3 14:57
 * @description: 用param的格式进行传参
 */

@RestController
@RequestMapping("param")
public class ParamController {

    /**
     * 直接接参数 前提是名字要是对应的
     * 这个也是可以不传递的 也就是没有要求的 不强求
      * @param name
     * @param age
     * @return
     */
    @RequestMapping("/login")
    @ResponseBody // 可以给前端返回
    public String login(String name, int age) {
        System.out.println("name = " + name + ", age = " + age);
        return "name = " + name + ", age = " + age;
    }


    /**
     * @RequestParam("你给请求的命名" , required = true, defaultValue = "默认的值") 表示的必须要传递的 默认是必须的
     * @param name
     * @param age
     * @return
     */
    @RequestMapping("/login1") // http://localhost:8080/param/login1?who=%22FindYou%22&age=12
    @ResponseBody
    public String login1(@RequestParam(value = "who", required = true) String name,  @RequestParam(required = false, defaultValue = "1") int age) {
        System.out.println("name = " + name + ", age = " + age);
        return "name = " + name + ", age = " + age;
    }


    /**
     *
     * @param hbs 集合接收值 必须要加 @RequestParam 这个是要求的 必须的
     * @return
     */
    //特殊值
    //一名多值 key=1&key=2 直接使用集合值即可
    @RequestMapping("/login2")
    @ResponseBody
    public String login2(@RequestParam List<String>hbs) { // 集合是必须要加 @RequestParam 的
        System.out.println("hbs = " + hbs);
        return hbs.toArray().toString();
    }

    /**
     * 接收实体类对象
     * 他会自动按照对象的属性去接收值
     */
    @RequestMapping("/login3")
    @ResponseBody
    public String login3(User user) {

        return user.toString();
    }
}
